The present invention is directed to the integration of heretofore fragmented computer application systems, and for enabling incompatible application systems to function smoothly as a unit. More specifically, the present invention provides a framework for enhancing enterprise application integration, a software engineering discipline that addresses the problem of application interoperability. The goal of Enterprise Application Integration is to transform a mutually incompatible, networked collection of applications into a working system without changing the applications themselves. That is, the purpose of Enterprise application integration (EAI) is to turn arbitrary collections of isolated applications into working systems.
A need for enabling incompatible computer systems to work in cooperation often results from the merger of two businesses having incompatible computer systems into a single enterprise. The investment in software development and data, and in complex hardware installations, and the time and expense of replacing one of the systems, including its software and data, has created a need for a way to mediate between the incompatible systems in a way that they can work in cooperation.
A computer system is a dynamically changing collection of cooperating components. Each component constitutes an identifiable programmed entity having an external interface for communicating with other components. A component that performs a well-defined business function and is designed to work in isolation is referred to as an application.
In the prototypical enterprise application integration scenario, a well-defined class of pre-existing components, namely, applications, perform all of the vital business functions. The remaining components consist of brokers and adapters. Brokers and adapters are present solely to enable the applications to interoperate.
Adapters for performing mediation between two incompatible computer systems are known in the prior art. However, until recently, the construction of an adapter in software has been a time-consuming and expensive process in that each adapter designed to mediate between a unique combination of computer systems has been required to be constructed from scratch.
An adapter must pass messages between incompatible computer systems in a way that makes the messages understandable to both systems. A message is an encoded body of text expressing either a request for services or a response to a request for services. Request messages flow from clients to servers. Response messages flow in the reverse direction. Messages exchanged by cooperating applications often exhibit a deeply nested structure. ebXML messages, for example, contain an optional transport envelope, a message envelope, a header envelope, a payload envelope and, finally, a header and a payload as illustrated in FIG. 18.
A component can broadcast a one-way message, namely, an event, to one or more subscribers, or the component can initiate a request/reply interaction, or engage in a conversational exchange. There are no other methods of application interaction. Any of the above mentioned interactions may be synchronous or asynchronous. In a synchronous interaction, as illustrated in FIG. 12, the receiver processes the message before acknowledging its receipt. In an asynchronous operation, the receiver, acknowledges receipt before doing anything else. The presence of brokers and adapters in a system, even when increasing the complexity of the system, does not alter the basic rules of inter-component engagement.
Referring now to FIG. 1, there is illustrated an adapter. An adapter is a non-invasive component that mediates between otherwise incompatible components, making it possible for them to interoperate. The purpose of Enterprise Application Integration (EAI) is to turn arbitrary collections of isolated applications and other components into working systems. A data adapter provides any heterogeneous mix of data sources with a single, industry standard (e.g., SQL) interface. An application adapter provides any heterogeneous mix of applications with a single, industry standard (e.g., XML) interface.
Adapters sometimes facilitate the introspection of metadata and the publication of standard request-response schemas, i.e. plans or protocols.
A payload consists of essential data carried within an encoded body of text of a message destined either to be processed by a server or digested by a client.
The sole purpose of an adapter is to enable two otherwise incompatible applications to work together. An adapter achieves this objective by mediating between the two applications without affecting the internal operation of either one.
Adapter developers have heretofore had difficulty in addressing large-scale enterprise application integration implementation problems.